#include "bits/stdc++.h"
using namespace std;



/**
 * @brief 给你一个二进制数组 nums 。

你可以对数组执行以下操作 任意 次（也可以 0 次）：

选择数组中 任意 一个下标 i ，并将从下标 i 开始一直到数组末尾 所有 元素 反转 。
反转 一个元素指的是将它的值从 0 变 1 ，或者从 1 变 0 。

请你返回将 nums 中所有元素变为 1 的 最少 操作次数。
 * 
 */
class Solution {
public:
    int minOperations(vector<int>& nums) {
        int cnt_0 = 0;
        int cnt_1 = 0;
        for (int i = 0; i < nums.size(); ++i) {
            if (nums[i] == 0) {
                if (i == 0)
                    ++cnt_0;
                else
                    if (nums[i] != nums[i - 1])
                        ++cnt_0;
            }
            else {
                if (i == 0)
                    ++cnt_1;
                else
                    if (nums[i] != nums[i - 1])
                        ++cnt_1;
            }
        }

        if (nums[0])
            return cnt_0 + cnt_1 - 1;
        else
            return cnt_0 + cnt_1;
    }
};